package com.mbc.rmt.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import com.mbc.common.entities.Branch;
import com.mbc.common.param.CriteriaParams;
import com.mbc.rmt.data.CashRemittanceByAgentNDetailDataList;
import com.mbc.rmt.data.DefinePaymentTypeDataList;
import com.mbc.rmt.data.DefinePaymentTypeDetailDataList;
import com.mbc.rmt.entities.Agent;
import com.mbc.rmt.entities.DefinePaymentType;
import com.mbc.rmt.entities.DefinePaymentTypeDetail;

public interface DefinePaymentTypeDetailDAO {

	public void create(DefinePaymentTypeDetail entity)throws SQLException;
	public void update(DefinePaymentTypeDetail entity)throws SQLException;
	public void delete(Long key)throws SQLException;
	public DefinePaymentTypeDetail find(String receiptNo)throws SQLException;
	public DefinePaymentTypeDetail findById(Long key)throws SQLException;
	public ArrayList<DefinePaymentTypeDetail> findByInvoiceId(long key) throws SQLException;
	public DefinePaymentTypeDetailDataList findDPTypeList(CriteriaParams param)throws SQLException;
	public DefinePaymentTypeDataList findDetail(DefinePaymentType param) throws SQLException;
	public CashRemittanceByAgentNDetailDataList getConfirmData(Branch l_entity, long defaultBranch)throws SQLException;
	void deleteByInvoiceId(Long key) throws SQLException;
	DefinePaymentTypeDetailDataList getDPDbyANBList(String typecode, DefinePaymentType entity) throws SQLException;
	DefinePaymentTypeDetailDataList getInvoiceNo(DefinePaymentTypeDetail param)throws SQLException;
	void updateAgent(DefinePaymentTypeDetail entity) throws SQLException;
	DefinePaymentTypeDetailDataList getDPDbyANBList(DefinePaymentTypeDetail entity) throws SQLException;
	void rollbackAgent(long detailid) throws SQLException;
	
	Agent searchAgent(String mode, Agent agent) throws SQLException;
	
	//mmt(20.11.2014)
	DefinePaymentTypeDetailDataList getReceiptNo(DefinePaymentTypeDetail entity)throws SQLException;
}
